% 变量顺序：G1 C3, C2, C1, A4 A3, A2, A1
x0 = [0.5, 0.01, 0.01, 0.01, 0.01, -0.01, 0.01];  % 初始猜测
opts = optimoptions('fmincon','Algorithm','sqp','Display','iter','TolCon',1e-10);
f = @(x) max(x) - min(x);  % 目标：极差最小
x_opt = fmincon(f, x0, [],[], [],[], [],[], @mycons, opts);

C3 =x_opt(1); C2=x_opt(2); C1=x_opt(3);
A4 =x_opt(4); A3=x_opt(5); A2=x_opt(6); A1=x_opt(7);

d0 = 1 ;
d1 = A1 - 4;
d2 = -3*A1 + C1*A2 + 6;
d3 = 3*A1 - 2*C1*A2 + C1*C2*A3 - 4;
d4 = -1*A1 + C1*A2 - C1*C2*A3 + C1*C2*C3*A4 +1;
fprintf('  C3 = %10f;\n  C2 = %10f;\n  C1 = %10f;\n  A4 = %10f;\n  A3 = %10f;\n  A2 = %10f;\n  A1 = %10f;\n',C3,C2,C1,A4,A3,A2,A1);
% disp(x_opt);

% 相等约束
function [c, ceq] = mycons(x)
    C3 =x(1); C2=x(2); C1=x(3);
    A4 =x(4); A3=x(5); A2=x(6); A1=x(7);

    d0 = 1 ;
    d1 = A1 - 4;
    d2 = -3*A1 + C1*A2 + 6;
    d3 = 3*A1 - 2*C1*A2 + C1*C2*A3 - 4;
    d4 = -1*A1 + C1*A2 - C1*C2*A3 + C1*C2*C3*A4 +1;

  ceq = [
            d0 - (1.0000 );
            d1 - (-1.88525936969883);
            d2 - (1.63053007762002 );
            d3 - (-0.667897236243253);
            d4 - (0.109584667752121 )];
  c = [];
  % disp((d0+d1+d2+d3)/(C1*C2*C3));
end






% c4 = 0.730816;
% c3 = 0.258192;
% c2 = 0.190274;
% c1 = 0.190136;
% a4 = 0.730690;
% a3 = 0.730816;
% a2 = 0.554266;
% a1 = 0.190434;
% b1 = 0.190434;






